package com.example.d3_udp2;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * 目标：完成UDP通信快速入门：实现多发多收
 */
public class Client {
    public static void main(String[] args) throws Exception {
        /*
        UDP协议特点：无连接,不可靠通信
        不事先建立连接,数据按照包发,一包数据包含自己的IP,程序端口,目的地IP,程序端口,和数据(限制在64kb内)
        发送放不管对方是否在线,数据在中间丢失也不管,如果接收到数据也不返回确认,是不可靠的,但是通信效率高
         */
        // 1.创建客户端对象（发韭菜出去的人）
        DatagramSocket socket = new DatagramSocket();

        // 2.创建数据包对象封装要发出去的数据（创建一个韭菜盘子）
        /* public DatagramPacket(byte buf[], int length,InetAddress address, int port)
               参数一：封装要发出去的数据
               参数二：发送出去的数据大小（字节个数）
               参数三：服务端的IP地址（找到服务端主机）
               参数四：服务端程序的端口
             */
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入要发送的数据:");
            String msg = sc.nextLine();
            // 如果发现用户输出的是exit 就退出循环
            if ("exit".equals(msg)) {
                System.out.println("欢迎下次光临！退出成功！");
                socket.close(); // 关闭连接
                break;
            }
            DatagramPacket packet = new DatagramPacket(msg.getBytes(), msg.getBytes().length, InetAddress.getLocalHost(), 6666);

            // 3.开始正式发送这个数据包的数据出去了
            socket.send(packet);
        }
    }
}
